package entidades;

import java.io.Serializable;

/**
 * Classe para gerenciar objetos que representem Data
 * @author Tales
 *
 */
public class Data implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -8368924413540931348L;
	private int dia;
	private int mes;
	private int ano;
	
	private final int DIA = 0, MES = 1, ANO = 2;

	/**
    * Construtor de Data
    * @param dia - representa o dia
    * @param mes - representa o mes
    * @param ano - representa o ano
    */
	public Data(int dia, int mes, int ano) {
		setDia(dia);
		setMes(mes);
		setAno(ano);
	}

	/**
	 * Construtor de Data
	 * @param data - array de inteiros de tamanho 3 representando a data
	 */
	public Data(int[] data) {
		int dia = data[DIA];
		setDia(dia);
		setMes(data[MES]);
		setAno(data[ANO]);
	}

	/**
	 * Construtor de Data
	 * @param dia - representa o dia
	 * @param mes - representa o mes
	 * @param ano - representa o ano
	 */
	public Data(String dia, String mes, String ano) {
		setDia(Integer.parseInt(dia));
		setMes(Integer.parseInt(mes));
		setAno(Integer.parseInt(ano));
	}
	
	/**
	 * Construtor para Encode e Decode
	 */
	public Data(){
		
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public void setDia(int dia) {
		this.dia = dia;
	}

	public void setMes(int mes) {
		this.mes = mes;
	}

	public void setAno(int ano) {
		this.ano = ano;
	}

	/**
	 * Retorna o dia
	 * @return - dia
	 */
	public int getDia() {
		return dia;
	}

	/**
	 * Retorna o mes
	 * @return - mes
	 */
	public int getMes() {
		return mes;
	}

	/**
	 * Retorna o ano
	 * @return - ano
	 */
	public int getAno() {
		return ano;
	}

	/**
	 * Verifica de esta data representa a mesma data fornecida
	 * @param outraData - a outra data a ser comparada
	 * @return true, se for a mesma data e false, caso contrario
	 */
	public boolean ehMesmaData(Data outraData) {
		if (getDia() == outraData.getDia() && getMes() == outraData.getMes()
				&& getAno() == outraData.getAno()) {
			return true;
		}
		return false;
	}

}
